# -*- coding: utf-8 -*-
from django.db import models
from django.contrib.auth.models import User

class Status(models.Model):
    name = models.CharField('Статус', max_length=10)
    code = models.CharField('Код', max_length=10)
    class Meta:
        verbose_name_plural = 'Статус фирмы' 
    def __unicode__(self):
        return self.name

class Sector(models.Model):
    name = models.CharField('Отрасль', max_length=50)
    class Meta:
        verbose_name_plural = 'Отрасль' 
    def __unicode__(self):
        return self.name
        
class Currency(models.Model):
    name = models.CharField('Валюта', max_length=50)
    code = models.CharField('Код', max_length=10)
    class Meta:
        verbose_name_plural = 'Валюта' 
    def __unicode__(self):
        return self.name

class OPF(models.Model):
    name = models.CharField('Организационно-правовая форма', max_length=50)
    nameshort = models.CharField('Сокращение', max_length=5)
    class Meta:
        verbose_name_plural = 'Организационно-правовая форма' 
    def __unicode__(self):
        return self.name

class City(models.Model):
    name = models.CharField('Город', max_length=50)
    class Meta:
        verbose_name_plural = 'Город' 
    def __unicode__(self):
        return self.name

class Contragent(models.Model):
    user= models.ForeignKey(User, verbose_name='Пользователь')
    rec_date = models.DateTimeField(verbose_name='Дата записи')
    status = models.ForeignKey(Status, verbose_name='Статус')
    city = models.ForeignKey(City, verbose_name='Город')
    address = models.CharField(verbose_name='* Адрес', max_length=300)
    tel1 = models.CharField(verbose_name='* Телефон 1', max_length=20)
    tel2 = models.CharField(verbose_name='Телефон 2', max_length=20, blank=True, null=True)
    contact = models.TextField(verbose_name='Контактная информация', blank=True, null=True)
    class Meta:
        verbose_name_plural = 'Контрагент'
    def __unicode__(self):
        try:
            return self.firm.name
        except:
            return self.individual.fio

class Firm(Contragent):
    name = models.CharField('* Наименование', max_length=200)
    inn = models.CharField('* ИНН', max_length=12)
    opf = models.ForeignKey(OPF, verbose_name='Организационно-правовая форма')
    sector = models.ForeignKey(Sector, verbose_name='Отрасль')
    bankr = models.BooleanField('В процедуре банкротства')
    site = models.URLField('Сайт в Интернете', blank=True, null=True)
    email = models.EmailField('* e-mail')
    post = models.CharField('* Должность', max_length=100)
    class Meta:
        verbose_name_plural = 'Организация' 
    def __unicode__(self):
        return self.name 

class Individual(Contragent):
    ip = models.BooleanField('Индивидуальный предприниматель')
    fio = models.CharField('* Ф.И.О.', max_length=200)
    inn = models.CharField('ИНН', max_length=12, blank=True, null=True)
    email = models.EmailField('e-mail', blank=True, null=True)
    class Meta:
        verbose_name_plural = 'Физическое лицо' 
    def __unicode__(self):
        return self.fio

class Debt(models.Model):
    user= models.ForeignKey(User)
    tested = models.BooleanField('Проверен')
    paid = models.BooleanField('Оплачен')
    result = models.TextField('Результат проверки', blank=True, null=True)
    rec_date = models.DateTimeField(verbose_name='Дата записи')
    date = models.DateField(verbose_name='* Дата возникновения')
    debtor = models.ForeignKey(Contragent, related_name="debtor", verbose_name='* Должник')
    creditor = models.ForeignKey(Contragent, related_name="creditor", verbose_name='* Кредитор')
    summa = models.PositiveIntegerField(verbose_name='* Сумма долга')
    penalty = models.PositiveIntegerField(verbose_name='Сумма пеней', blank=True, null=True)
    currency = models.ForeignKey(Currency)
    genesis = models.TextField(verbose_name='* Основание возникновения')
    state = models.TextField(verbose_name='Текущее состояние', blank=True, null=True)
    agree = models.BooleanField(verbose_name='* Я ознакомлен и согласен с условиями соглашения', blank=False, null=False)
    class Meta:
        verbose_name_plural = 'Долг' 
    def __unicode__(self):
        return u'%s , Должник : %s, Кредитор : %s, Сумма: %s' % (self.rec_date, self.debtor.__unicode__(), self.creditor.__unicode__(), self.summa)

class Verdict(models.Model):
    user= models.ForeignKey(User)
    debt = models.ForeignKey(Debt)
    inforce = models.BooleanField('* Вступило в силу')
    rec_date = models.DateTimeField('Дата записи')
    date = models.DateField('Дата решения', blank=True, null=True)
    summa = models.PositiveIntegerField('* Сумма основного долга по решению')
    penalty = models.PositiveIntegerField('Сумма пеней по решению', blank=True, null=True)
    currency = models.ForeignKey(Currency)
    resolution = models.TextField('Резолютивная часть', blank=True, null=True)
    class Meta:
        verbose_name_plural = 'Решение суда'
    def __unicode__(self):
        return '%s : %s : %s' % (self.rec_date, self.debtor.debtor.name, self.summa)
